#ifndef COMPONENTTREEITEM_H
#define COMPONENTTREEITEM_H

#include <QList>
#include <QVariant>
#include <QSharedPointer>

class ComponentTreeItem
{
public:
    ComponentTreeItem(ComponentTreeItem* parent = 0);
    ComponentTreeItem(const QList<QVariant>& data ,ComponentTreeItem *parent = 0);
    ~ComponentTreeItem();

    // appendChildItem нужна только для первоначального построения данных
    void appendChildItem(ComponentTreeItem* childItem);
    // childItem позволяет получать информацию о элементе в моделе
    ComponentTreeItem* childItem(int row);
    int childCount() const;
    int columnCount() const;
    // data для получения данных из определённого столбца.
    QVariant data(int column) const;
    // The TreeModel uses this function to determine the number of rows that exist for a given parent item.
    // row используется моделью чтобы определить число строк которые относятся к данному элементу.
    int row() const;
    ComponentTreeItem* parent();
    // Удалить элемент.
    void removeChildItem(ComponentTreeItem* childItem);

private:
    QList<ComponentTreeItem*> childItems;
    QList<QVariant> itemData;
    //QSharedPointer<ComponentTreeItem> parentItem;
    ComponentTreeItem* parentItem;
};

#endif // COMPONENTTREEITEM_H
